System and method for gating notifications

ABSTRACT

System and methods of gating notifications for content objects of an electronic learning platform are described herein. The notification may be conditioned on whether the content object is available to a user receiving the notification, or the state of the content object, for example.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/111,383, filed Aug. 24, 2018, which is a continuation of U.S. patentapplication Ser. No. 15/644,258, filed Jul. 7, 2017, now U.S. Pat. No.10,074,287, which is itself a continuation of U.S. patent applicationSer. No. 14/954,684, filed Nov. 30, 2015, now U.S. Pat. No. 9,721,477,which is a continuation of U.S. patent application Ser. No. 13/665,410,filed Oct. 31, 2012, now U.S. Pat. No. 9,202,384, the contents of all ofwhich are hereby incorporated by reference herein.

FIELD

The embodiments described herein relate to electronic learning systemsand methods, and more particularly to systems and methods fornotifications relating to content objects for an electronic learningplatform.

INTRODUCTION

Electronic learning (also called e-Learning or eLearning) generallyrefers to education or learning where users (e.g., learners,instructors, administrative staff, teaching assistants) engage ineducation related activities using computers and other computingdevices. For example, learners may enroll or participate in a course orprogram of study offered by an educational institution (e.g., a college,university or grade school) through a web interface that is accessibleover the Internet. Similarly, learners may receive assignmentselectronically, participate in group work and projects by collaboratingonline, and be graded based on assignments and examinations that aresubmitted using an electronic drop box.

Electronic learning is not limited to use by educational institutions,however, and may also be used in governments or other organizations,such as in corporate environments. For example, employees at a regionalbranch office of a particular company may use electronic learning toparticipate in a training course offered by their company's head officewithout ever physically leaving the branch office.

Electronic learning can also be an individual activity with noinstitution driving the learning. For example, individuals mayparticipate in self-directed study (e.g., studying an electronictextbook or watching a recorded or live webcast of a lecture) that isnot associated with a particular institution or organization.

Electronic learning often occurs without any face-to-face interactionbetween the users in the educational community. Accordingly, electroniclearning overcomes some of the geographic limitations associated withmore traditional learning methods, and may eliminate or greatly reducetravel and relocation requirements imposed on users of educationalservices.

Furthermore, because course materials can be offered and consumedelectronically, there are fewer physical restrictions on learning. Forexample, the number of learners that can be enrolled in a particularcourse may be practically limitless, as there may be no requirement forphysical facilities to house the learners during lectures. Furthermore,learning materials (e.g., handouts, textbooks, etc.) may be provided inelectronic formats so that the learning materials can be reproduced fora virtually unlimited number of learners. Finally, lectures may berecorded and accessed at varying times (e.g., at different times thatare convenient for different users), thus accommodating users withvarying schedules, and allowing users to be enrolled in multiple coursesthat might have a scheduling conflict when offered using traditionaltechniques.

Users (e.g., learners, instructors, administrative staff, teachingassistants) may electronically add or edit electronic learning content,such as course material, assignments, discussion posts, and so on.Electronic learning systems and methods may provide notifications of newand edited electronic learning content to other users. There is a needfor improved electronic learning systems and methods that handlenotifications.

The above information is presented as background information only toassist with an understanding of the present disclosure. No determinationhas been made, and no assertion is made, as to whether any of the abovemight be applicable as prior art with regard to the present invention.

SUMMARY

In a first aspect, embodiments described herein may provide a computerimplemented method of gating notifications relating to content objectsof an electronic learning platform. The method may be implemented by acomputer comprising a processor and a memory coupled to the processorand configured to store instructions executable by the processor toperform acts comprising determining whether a content object isavailable to at least one user, where the content object may includecontent for a course managed by the electronic learning platform; upondetermining that the content object is available to the at least oneuser, sending a notification to the at least one user indicating thatthe content object is available; and upon determining that the contentobject is not available to the at least one user, gating thenotification until the content object is available to the at least oneuser. The method may perform different checks to determine whether acontent object is available to a user, as availability may be based onthe state of the content object, permissions, release conditions,visibility, user configurations, and so on. For example, components of anotification system may determine availability by polling a databasewith data relating to content objects, matching the data against rules,raising events upon detecting a matched rule, handling the raised eventsby routing them to the appropriate component, and generatingnotifications based on the events. Determining availability may be basedon polling data relating to content objects, raising an availability ornotification event, receiving an availability or notification event, andso on.

In accordance with some embodiments, determining whether the contentobject is available may comprise determining a publication date of thecontent object, where the content object may only be available to the atleast one user on or after the publication date. The publication datemay be maintained as an attribute or state associated with the contentobject. A change in publication state may raise a notification eventthat may be handled by a component of the notification system.

In accordance with some embodiments, the method may further comprisescheduling the content object to be automatically published at apublication date, and wherein determining whether the content object isavailable comprises determining whether the publication date of thecontent object has occurred, wherein the content object may only beavailable to the at least one user if the publication date has occurred.When the content object is automatically published this may trigger achange in a publication state associated with the content object.

In accordance with some embodiments, the method may further comprisemaintaining a publication state for the object indicating if the objecthas been published, and determining whether the content is available maycomprise checking the publication state to see if the object has beenpublished, raising a notification event at the time of publication, andso on.

In accordance with some embodiments, the method may further comprisemaintaining a scheduled publication state for the content object, wherethe scheduled publication state indicates a publication date of when thecontent object will be automatically published, and determining whetherthe content is available may comprise checking the scheduled publicationstate to see if the publication date has occurred.

In accordance with some embodiments, the method may further comprisemaintaining a draft state indicating if the content object is a draft.In some embodiments if the content object is a draft then the contentobject may not available, and determining whether the content isavailable may comprise checking the draft state to see if the contentobject is in draft. In some embodiments, draft objects may not bepermitted to have notifications sent about them. In other embodiments,one or more particular users may be notified about draft-state contentobjects, such as when a new draft content object is created. Forexample, an instructor may be notified that their teaching assistantauthored a draft news item for review and approval by the instructorprior to publication.

In accordance with some embodiments, the content object may beassociated with at least one permission attribute and determiningwhether the content object is available to the at least one user maycomprise checking the permission attribute. In accordance with someembodiments, determining whether the content object is available to theat least one user may comprise checking release conditions based on oneor more actions performed by the at least one user. In accordance withsome embodiments, determining whether the content object is available tothe at least one user may comprise checking whether an event hasoccurred, where the event is associated with at least one user and thecontent object. In accordance with some embodiments, determining whetherthe content object is available to at least one user may comprisechecking configurations associated with the user(s).

In accordance with some embodiments, the method may further comprisemaintaining a notification status indicating if a notification has beensent to the at least one user for the content object, and where prior tothe sending the notification to the at least one user the method mayfurther comprise checking the notification status and not sending thenotification if the notification status indicates that a notificationhas been sent to the at least one user for the content object. Inaccordance with some embodiments, the notification status may bemaintained on a per user basis, where each notification status isassociated with a user indicating if a notification has been sent to theuser for the content object.

In another aspect, embodiments described herein may provide a method ofgating notification relating to a content object of an electroniclearning platform comprising: maintaining a scheduled publication statefor the content object, wherein the scheduled publication stateindicates a publication date of when the content object will beautomatically published; gating a notification relating to the contentobject until the content object is published by monitoring the scheduledpublication state; and sending the notification relating to the contentobject when the content object is published. The method may performdifferent checks to determine whether a content object is published toone or more users, as publication may be based on the state of thecontent object, permissions, release conditions, visibility, userconfigurations, and so on. For example, components of a notificationsystem may determine publication by polling a database with datarelating to content objects for state changes, matching the data againstrules to detect particular state changes, raising events upon detectinga matched rule, handling the raised events by routing them to theappropriate component, and generating notifications based on the events.Determining publication may be based on polling data relating to contentobjects for state changes, raising a notification event relating to astate change, receiving the notification event, and so on.

In accordance with some embodiments, the method may further comprisemaintaining a publication state for the content object indicatingwhether the content object has been published, where gating thenotification may further comprise monitoring the publication state.

In accordance with some embodiments, the method may further comprisemaintaining a draft state for the content object indicating whether thecontent object is a draft. In accordance with some embodiments, if thecontent object is a draft then the notification relating to the contentobject may be gated until the content object is no longer in draft.Gating the notification may further comprise monitoring the draft state.In some embodiments, draft objects may not be permitted to havenotifications sent about them. In other embodiments, one or more usersmay be notified about draft-state objects, and a notification may not begated for all users when a content object is in draft state. The methodmay further comprise indicating whether a notification regarding acontent object that is a draft should be gated via another attribute,state and the like, and what users the notification should be gated forand what users should receive a notification about the content objectthat is a draft. For example, an instructor may be notified that theirteaching assistant authored a draft content object but the students maynot be notified (e.g. the notifications to students will be gated) untilthe instructor reviews the drat content object and approves the contentobject for publication, and so on.

In accordance with some embodiments, the method may further comprisesetting, using an interface, the scheduled publication state for thecontent object by receiving the publication date. The interface may alsoenable setting attributes for the content object, such as permissions,visibility and so on. Further, the interface may also enable setting adraft state for the content object and scheduling publication of thecontent object (e.g. setting a scheduled publication state), reviewing adraft content object, editing a content object, and so on.

In accordance with some embodiments, the method may further comprisemaintaining a notification status indicating whether a notification hasbeen sent to at least one user for the content object, and where priorto sending the notification to at least one user the method may furthercomprise checking the notification status and not sending thenotification if the notification status indicates that a notificationhas been sent to the user(s) for the content object.

In accordance with some embodiments, the method may further comprisemaintaining a notification status on a per user basis, where eachnotification status is associated with a user indicating if anotification has been sent to the user for the content object.

In a further aspect, embodiments described herein may provide a systemof gating notification relating to a content object of an electroniclearning platform, where the system may comprise hardware and softwarecomponents as described herein configured to provide at least onecontent object associated with a scheduled publication state, where thescheduled publication state indicates a publication date of when thecontent object will be automatically published, wherein the contentobject is operable to issue an availability event when the publicationdate occurs; an event handler operable to monitor for publication eventsand generate a notification event for the content object upon detectinga availability event issued by the content object; and a notificationhandler operable to monitor for notification events and to gate anotification relating to the content object until detecting anotification event for the content object.

In accordance with some embodiments, the system may further comprise aninterface for setting the scheduled publication state for the contentobject.

In accordance with some embodiments, the at least one content object maybe further associated with a draft state indicating whether the contentobject is a draft. In some embodiments, a content object is operable toissue the availability event when the draft state indicates that thecontent object is not a draft. In some embodiments, draft objects maynot be permitted to have notifications sent about them (e.g.notifications may be gated until the content object is no longer indraft). In other embodiments, one or more users may be notified aboutdraft-state objects. For example, an instructor may be notified thattheir teaching assistant authored a draft content object. Accordingly, acontent object is operable to issue a notification event when the draftstate indicates that the content object is a draft. The notificationevent may only relate to particular users, such as an instructor orteaching assistant, for example.

In accordance with some embodiments, the at least one content object isfurther associated with a publication state indicating whether thecontent object has been published, wherein the content object isoperable to issue the availability event when the publication stateindicates that the content object has been published.

In accordance with some embodiments, the at least one content object isfurther associated with a notification status indicating whether anotification has been sent to the at least one user for the contentobject.

The embodiments described herein may also provide other systems andmethods as described herein, along with other features andfunctionalities.

In another aspect, embodiments described herein may provide a computerreadable media configured for gating notification relating to a contentobject of an electronic learning platform, the computer readable mediastoring instructions executable by the processor to perform the methodcomprising determining whether a content object is available to at leastone user, wherein the content object comprises content for a coursemanaged by the electronic learning platform; upon determining that thecontent object is available to the at least one user, sending anotification to the at least one user indicating that the content objectis available; and upon determining that the content object is notavailable to the at least one user, gating the notification until thecontent object is available to the at least one user. In accordance withsome embodiments, the computer readable media is computer readablestorage media. Other instructions may also be stored thereon asdescribed herein.

In another aspect, embodiments described herein may provide a computerreadable media configured for gating notification relating to a contentobject of an electronic learning platform, the computer readable mediastoring instructions executable by the processor to perform the methodcomprising: a scheduled publication state for the content object,wherein the scheduled publication state indicates a publication date ofwhen the content object will be automatically published; gating anotification relating to the content object until the content object ispublished by monitoring the scheduled publication state; and sending thenotification relating to the content object when the content object ispublished. In accordance with some embodiments, the computer readablemedia is computer readable storage media. Other instructions may also bestored thereon as described herein.

DRAWINGS

Various embodiments will now be described, by way of example only, withreference to the following drawings, in which:

FIG. 1 is a schematic diagram of an electronic learning system accordingto some embodiments;

FIG. 2 is a schematic diagram of a notification system for gatingnotifications according to some embodiments;

FIG. 3 is a flow diagram of an electronic learning method for gatingnotifications according to some embodiments;

FIG. 4 is another flow diagram of an electronic learning method forgating notifications according to some embodiments;

FIG. 5 is a screen shot diagram of an interface for setting apublication state for a content object according to some embodiments;

FIG. 6 is another screen shot diagram of an interface for setting ascheduled publication state for a content object according to someembodiments; and

FIG. 7 is a further screen shot diagram of an interface for indicatingthat a major edit has been made to a content object according to someembodiments.

For simplicity and clarity of illustration, where consideredappropriate, reference numerals may be repeated among the figures toindicate corresponding or analogous elements or steps. In addition,numerous specific details are set forth in order to provide a thoroughunderstanding of the exemplary embodiments described herein. However, itwill be understood by those of ordinary skill in the art that theembodiments described herein may be practiced without these specificdetails. In other instances, well-known methods, procedures andcomponents have not been described in detail so as not to obscure theembodiments generally described herein.

DESCRIPTION OF VARIOUS EMBODIMENTS

The embodiments of the systems and methods described herein may beimplemented in hardware or software, or a combination of both. Theseembodiments may be implemented in computer programs executing onprogrammable computers, each computer including at least one processor,a data storage system (including volatile memory or non-volatile memoryor other data storage elements or a combination thereof), and at leastone communication interface. For example, and without limitation, thevarious programmable computers may be a server, network appliance,set-top box, embedded device, computer expansion module, personalcomputer, laptop, personal data assistant, cellular telephone,smartphone device, UMPC tablets and wireless hypermedia device or anyother computing device capable of being configured to carry out themethods described herein.

Program code is applied to input data to perform the functions describedherein and to generate output information. The output information isapplied to one or more output devices. In some embodiments, thecommunication interface may be a network communication interface. Inembodiments in which elements of the invention are combined, thecommunication interface may be a software communication interface, suchas those for Inter-Process Communication (IPC). In still otherembodiments, there may be a combination of communication interfacesimplemented as hardware, software, and combination thereof.

Each program may be implemented in a high level procedural or objectoriented programming or scripting language, or both, to communicate witha computer system. However, alternatively the programs may beimplemented in assembly or machine language, if desired. The languagemay be a compiled or interpreted language. Each such computer programmay be stored on a storage media or a device (e.g., ROM, magnetic disk,optical disc), readable by a general or special purpose programmablecomputer, for configuring and operating the computer when the storagemedia or device is read by the computer to perform the proceduresdescribed herein. Embodiments of the system may also be considered to beimplemented as computer-readable storage medium, configured with acomputer program, where the storage medium so configured causes acomputer to operate in a specific and predefined manner to perform thefunctions described herein. For example, computer-readable storage mediamay be non-transitory computer-readable media, which may include bothvolatile and non-volatile storage media.

Furthermore, the systems and methods of the described embodiments arecapable of being distributed in a computer program product including aphysical, non-transitory computer readable medium that bears computerusable instructions for one or more processors. The medium may beprovided in various forms, including one or more diskettes, compactdisks, tapes, chips, magnetic, volatile memory, non-volatile memory, andelectronic storage media, and the like. The computer useableinstructions may also be in various forms, including compiled andnon-compiled code.

Referring now to FIG. 1 , illustrated therein is an electronic learningsystem 10 according to some embodiments. The system 10 may beparticularly configured for gating notifications relating to contentobjects. The system 10 as shown is an electronic learning system oreLearning system. However, in other instances the system 10 may not belimited to electronic learning systems and it may be other types ofsystems.

Using the system 10, one or more users 12, 14 may communicate with aneducational service provider 30 to participate in, create, edit, andconsume electronic learning services, including educational courses. Insome cases, the educational service provider 30 may be part of (orassociated with) a traditional “bricks and mortar” educationalinstitution (e.g., a grade school, university or college), anotherentity that provides educational services (e.g., an online university, acompany that specializes in offering training courses, an organizationthat has a training department, and the like), or may be an independentservice provider (e.g., for providing individual electronic learning).

It should be understood that a course is not limited to courses offeredby formal educational institutions. The course may include any form oflearning instruction offered by an entity of any type. For example, thecourse may be a training seminar at a company for a group of employeesor a professional certification program (e.g., PMP, CMA, and the like)with a number of intended participants.

In some embodiments, one or more educational groups can be defined thatinclude one or more of the users 12, 14. For example, as shown in FIG. 1, the users 12, 14 may be grouped together in an educational group 16representative of a particular course (e.g., History 101, French 254),with a first user 12 or “instructor” being responsible for organizingand/or teaching the course (e.g., developing lectures, preparingassignments, creating educational content etc.), while the other users14 or “learners” are consumers of the course content (e.g., users 14 areenrolled in the course).

In some examples, the users 12, 14 may be associated with more than oneeducational group (e.g., the users 14 may be enrolled in more than onecourse, a user may be enrolled in one course and be responsible forteaching another course, a user may be responsible for teaching aplurality of courses, and so on).

In some cases, educational sub-groups may also be formed. For example,the users 14 are shown as part of educational sub-group 18. Thesub-group 18 may be formed in relation to a particular project orassignment (e.g., sub-group 18 may be a lab group) or based on othercriteria. In some embodiments, due to the nature of the electroniclearning, the users 14 in a particular sub-group 18 need not physicallymeet, but may collaborate together using various tools provided by theeducational service provider 30.

In some embodiments, other groups 16 and sub-groups 18 could includeusers 14 that share common interests (e.g., interests in a particularsport), that participate in common activities (e.g., users that aremembers of a choir or a club), and/or have similar attributes (e.g.,users that are male, users under twenty-one years of age, and the like).

Communication between the users 12, 14 and the educational serviceprovider 30 can occur either directly or indirectly using any one ormore suitable computing devices. For example, the user 12 may use acomputing device 20 having one or more client processors such as adesktop or mobile computer that has at least one input device (e.g., akeyboard, a mouse, touch screen, and the like) and at least one outputdevice (e.g., a display screen, speakers, and the like).

The computing device 20 can generally be any suitable device forfacilitating communication between the users 12, 14 and the educationalservice provider 30. For example, the computing device 20 could be alaptop 20 a wirelessly coupled to an access point 22 (e.g., a wirelessrouter, a cellular communications tower, and the like), a wirelesslyenabled Personal Data Assistant (PDA) 20 b or smart phone, a terminal 20c, a tablet computer 20 d, or a game console 20 e operating over a wiredconnection 23.

The computing devices 20 may be connected to the service provider 30 viaany suitable communications channel. For example, the computing devices20 may communicate to the educational service provider 30 over a LocalArea Network (LAN) or intranet, or using an external network (e.g., byusing a browser on the computing device 20 to browse to one or more webpages or other electronic files presented over the Internet 28 over adata connection 27).

In some examples, one or more of the users 12, 14 may be required toauthenticate their identities in order to communicate with theeducational service provider 30. For example, each of the users 12, 14may be required to input a user identifier such as a login name, and/ora password associated with that user or otherwise identify themselves togain access to the system 10.

In some examples, one or more users (e.g., “guest” users) may be able toaccess the system without authentication. Such guest users may beprovided with limited access, such as the ability to review one or morecomponents of the course to decide whether they would like toparticipate in the course but without the ability to post comments orupload electronic files.

In some embodiments, the wireless access points 22 may connect to theeducational service provider 30 through a data connection 25 establishedover the LAN or intranet. Alternatively, the wireless access points 22may be in communication with the educational service provider 30 via theInternet 28 or another external data communications network. Forexample, one user 14 may use a laptop 20 a to browse to a webpage thatdisplays elements of an electronic learning system (e.g., a coursepage).

The educational service provider 30 generally includes a number offunctional components for facilitating the provision of electroniclearning services. For example, the educational service provider 30generally includes one or more processing devices such as servers 32,each having one or more processors. The processors on the servers 32will be referred to generally as “remote processors” so as todistinguish from client processors found in computing devices (20, 20a-20 e). The servers 32 are configured to send information (e.g.,electronic files such as web pages) to be displayed on one or morecomputing devices 20 in association with the electronic learning system10 (e.g., course information). In some embodiments, a server 32 may be acomputing device 20 (e.g., a laptop or personal computer).

The educational service provider 30 also generally includes one or moredata storage devices 34 (e.g., memory, and the like) that are incommunication with the servers 32, and could include a relationaldatabase (such as a SQL database), or other suitable data storagedevices. The data storage devices 34 are configured to host data 35about the courses offered by the service provider (e.g., the courseframeworks, educational materials to be consumed by the users 14,records of assessments done by users 14, tests and results, assignments,and the like). Data storage devices 34 may also store material relatedto a course as content objects or as data structures that store contentfor a course along with metadata about the content, or attributes of thecontent. Data storage devices 34 are operable to store content foreducational service provider 30 such as content objects for courselectures, lesson plans, course framework, assignments, tests, comments,discussion posts, uploaded electronic files, news items, data feeditems, and so on.

The data storage devices 34 may also store authorization criteria thatdefine what actions may be taken by the users 12, 14. In someembodiments, the authorization criteria may include at least onesecurity profile associated with at least one role. For example, onerole could be defined for users who are primarily responsible fordeveloping an educational course, teaching it, and assessing workproduct from other users for that course. Users with such a role mayhave a security profile that allows them to configure various componentsof the course, post assignments, add assessments, evaluate performance,create new content objects for the course, edit content objects for thecourse, and so on.

In some embodiments, some of the authorization criteria may be definedby specific users 40 who may or may not be part of the educationalcommunity 16. For example, administrator users 40 may be permitted toadminister and/or define global configuration profiles for the system10, define roles within the system 10, set security profiles associatedwith the roles, and assign the roles to particular users 12, 14 in thesystem 10. In some cases, the users 40 may use another computing device(e.g., a desktop computer 42) to accomplish these tasks.

The data storage devices 34 may also be configured to store otherinformation, such as personal information about the users 12, 14 of thesystem 10, information about which courses the users 14 are enrolled in,roles to which the users 12, 14 are assigned, particular interests ofthe users 12, 14, assessment data of users 12, 14, content for thecourses from users 12, 14 and so on.

In some embodiments, the system 10 may also have one or more backupservers 31 that may duplicate some or all of the data 35 stored on thedata storage devices 34. The backup servers 31 may be desirable fordisaster recovery (e.g., to prevent undesired data loss in the event ofan event such as a fire, flooding, or theft). In some embodiments, thebackup servers 31 may be directly connected to the educational serviceprovider 30 but located within the system 10 at a different physicallocation.

The servers 32 and data storage devices 34 may also provide otherelectronic learning management tools (e.g., allowing users to add anddrop courses, communicate with other users using chat software,discussion forums, and the like), and/or may be in communication withone or more other vendors that provide the tools. An electronic learningmanagement tool may include a tool for gating notifications, as will befurther discussed in relation to FIG. 2 .

Embodiments described herein may provide a workflow-based method andsystem of gating the sending of automated notifications to users 14, 12.The notifications may relate to content creation and editing, updatesfrom data feeds, new posts on discussion forums, and so on. For example,a content object relating to a course may include course content, suchas a reading assignment. The content object may initially be hidden fromsome or all users 14 enrolled in the course and may become available tothose users 14 on a specific date or in response to a user 14 activity(e.g., completing a previous reading assignment). When the contentobject becomes available to users 14 a notification regarding thecontent object may be sent to the users 14. Example notifications mayinclude but are not limited to email message notifications, SMS textmessage notifications, social network notifications, third partyplatform notifications, and so on. System 10 is operable to gatenotifications about content objects until the content object isavailable to users 14, specific conditions have been met, the contentobject has been published, a date has occurred (e.g., a publicationdate), an event has occurred (e.g., a user 14 has completed anassignment), the content object is visible, and so on.

In other example embodiments, notifications may also relate to assessedcontent items. For example, a notification may notify a user 14 thattheir quiz or assignment is due in 2 days. As a further example, anotification may notify a user that their content object has beenassessed by a peer, by another user 14, 12 such as instructor orteaching assistant, and so on. In further example embodiments,notifications may also relate to communications from users 14. Suchnotifications may be related to events raised by an email tool, pagertool, and other communication tools that may be provided by system 10 orintegrate with system 10.

Embodiments described herein may address the situation where a contentcreator (e.g., user 12, 14) may wish to withhold notifying other users14, 12 about a new or updated content object by gating notificationsrelating to that content object for one or more users 14, 12. Forexample, a content object may be required to go through a copy editingprocess before it is made generally available to learners 14 or otherusers 14, while an instructor 12 may receive notification about thenewly created content object so that they may review the content objectprior to general publication to the learners 14. Embodiments describedherein may provide an intuitive workflow which allows content creatorsto gate the sending of notifications for content objects until such timeas they permit notifications to be sent. Embodiments described hereinmay provide a workflow to gate the sending of notifications withoutunduly burdening the content creator. In this workflow, each contentobject may be associated with a particular state which unambiguouslyindicates whether notifications have been sent about this particularobject. Further, a content object may be associated with a particularstate which indicates whether the content object is a draft or hasalready been published. Notifications for the content object may begated until the content object is published and no longer a draft, alongwith other conditions, for example. In other embodiments, notificationsrelated to draft-state objects may not be gated in relation toparticular users 12, 14. For example, an instructor 12 may be notifiedthat their teaching assistant authored a draft content object for acourse, such as a news item, assignment, quiz, or course content. Acontent object may be associated with a particular state which indicatesa scheduled publication data for the content object and notificationsfor the content object may be gated until the scheduled publicationoccurs.

For example, a content object may be associated with the followingexample three states:

Draft State: Indicates whether the content object is a draft object. Insome embodiments, draft objects may not be permitted to havenotifications sent about them. In other embodiments, one or moreparticular users 14 may be notified about draft-state objects;

Publication State: Indicates whether the content object has beenpublished. Published objects are generally available and may havenotifications sent to this effect (or already had notifications sent tothis effect);

Scheduled Publication State: Indicates the date at which the contentobject is scheduled to be automatically published. Scheduled objects arecontent objects that are due to be published at some point in thefuture. Scheduled objects may have notifications sent at the time theirpublish date arrives. Scheduled objects may trigger the gating ofnotifications until their publish date arrives.

These are example states and other states may also be associated withthe content object. As a further example, a content object may beassociated with a notification status indicating whether a notificationhas already been sent to one or more users 14 regarding the contentobject. The notification status may be maintained on a per user 14 basisindicating whether a notification has been sent to a particular user 14.In accordance with some embodiments, content objects may be associatedwith an “archived” state and one or more users 14 may be notified aboutthe archived content objects. An archived object may be a content objectthat has been published but is no longer generally available. Inaccordance with other embodiments, content objects may be associatedwith a “deleted” state and one or more users 14 may be notified aboutthe deleted content objects. A deleted content object may be a contentobject that has been published but has since been deleted, and thus nolonger generally available.

Embodiments described herein may provide a combination of unambiguouscontent object states for determining when notifications are sent along(or gated) with a workflow for setting the content object's status inorder to provide a user-friendly way of gating automated notificationsfor content objects in response to notification events (e.g., creationand editing of content items). Notifications may be instantaneous, or anumber of notifications may be collected together, and sent in a singlesummary notification email itemizing the collected notifications.Collecting notifications for a summary may effectively gatenotifications until the summary is delivered to a user 14. Schedulingdelivery may be set by user configurations or preferences, for example.Scheduling delivery may also be based on a default schedule, as anotherexample. Embodiments described herein may enable simple and intuitivesetting of one or more states for a content object for the user 14, 12,without requiring the user 14, 12 to perform extraneous tasks. As oneexample, embodiments described herein may provide an interface thatreplaces the normal “save” or “create” buttons typically seen in contentcreation workflows with buttons which explicitly call out the actionbeing performed on the content object (i.e., which state the contentobject will have after clicking the button). For example, the action mayinvolve setting one or more states. Using these buttons as dual-use“save” and “set status” actions means that users 14, 12 may have no orlittle extra work to perform than they did previously, while at the sametime reducing any anxiety that the content object will end up with anincorrect state (and thus, potentially send notifications when it wasnot desired). Example interfaces will be described herein in relation toFIGS. 5, 6, and 7 .

Referring now to FIG. 2 , there is shown a schematic diagram of anotification system 50 that may be implemented by one or more servers 32and data storage devices 34 of the educational service provider 30 (FIG.1 ) according to some embodiments. Notification system 50 is operable tosend notifications relating to content objects to one or more users 14,12. One or more processors may configure the notification system 50 togate notifications relating to content objects until certain conditionsare met, events occur, dates occur, and so on.

A content object contains data or content related to the educationalservice provider 30 such as general course content, assignments, tests,messages, discussion posts, authorization data, and so on. A contentobject may be created and edited. As noted herein, a content object maybe associated with states, such as a publication state, a draft state,and a scheduled publication state, for example. Some users 12 may nothave access to the content object until it becomes “available” ascodified and automated by release conditions, visibility, permissions,states, and events. For example, a content object may be a readingassignment that may not be available to students until a specified date.A teacher may upload all reading assignments for the course at once andspecify the publication date for each reading assignment by setting thecorresponding scheduled publication state. Each reading assignment maybe saved as a separate content object. As another example, a contentobject may be a message on a discussion forum for the course and mayonly be available and accessible by students enrolled in the course orparticipating in the discussion forum. As further example, a contentobject may be a news article or a daily digest (summary) of newsarticles and may only be available to students that subscribe to thenews or daily digest. As another example, a content object may be anassessment-related object, such as for example grades, rubrics, and soon.

Database 52 may be implemented by storage devices 34 and may store datafor part or all of system 10. The data may include content objects,course data, administrative data, attendance data, data feeds, metadata,attributes and so on. For example, database may include content objectsand metadata about (or attributes of) the content objects including thecreator, creation data, and states such as schedule publication state,publication state, draft state and so on. Database 52 may also storeuser preference data, configuration data, log data, enrollment data,assessment data, and so on.

Condition set evaluator task 54 is a service that polls database 52 todetermine whether conditions relating to the data have been met. Theconditions may include release conditions which may specify when acontent object is accessible (or may be released) to users 14, 12. Whena release condition is met, then a content object may be released to allusers 14, a subset of users 14, or no users 14, for example, asspecified in the release condition. A release condition may be generalto all users or specific to individual users 12 or a subgroup thereof.When the condition set evaluator task 54 determines that a releasecondition has been met then condition set evaluator task 54 raises anevent. For example, the event may be a notification event indicatingthat one or more users 14 should be notified about a content objectassociated with the release condition that was met. The condition setevaluator task 54 may be implemented as a rules engine with rules thatdefine the conditions. The condition set evaluator task 54 may match therules against the data of database 52 to determine whether a rule hasbeen met. If one or more rules are met then condition set evaluator task54 raises one or more corresponding events.

Release conditions may relate to actions performed by users 14, and maybe event-based or date-based. For example, a content object may includecontent for an answer key to an assignment for a course and a releasecondition may specify that the content object may not be released to auser 14 until she/he has completed the assignment or until all users 14enrolled in the course have completed the assignment. As a furtherexample, a content object may include content for lecture notes for acourse and a release condition may specify that the content object maynot be released to users 14 enrolled in the course until the date ofrespective lecture, or unless the user 14 attends the lecture. A releasecondition may specify whether a notification event should be raised whena content object is updated or edited. For example, condition setevaluator task 54 is operable to poll database 54 and identify an updateto a content object. A release condition may specify that notificationshould be sent for major edits to a content object (e.g., as compared tominor edits regarding grammar, typos, and the like) and accordingly,condition set evaluator task 54 will only raise a notification event forthe update if it is determined to be a major edit. Condition setevaluator task 54 is operable to check multiple conditions relating tothe same content object before raising a notification event to ensureall release conditions relating to the content object have been met.Alternatively, another component of notification system 50 may beoperable to check multiple conditions (or notification events) relatingto the same content object before sending a notification to ensure allconditions relating to notification of the content object have been met(i.e., gate the notification until all conditions relating tonotification of the content object have been met). Conditions may alsobe based on a user's role and/or course enrollments. The system 10 mayalso be operable to notify users 12, 14 when they haven't logged intothe system in a given number of days. Additionally, system-generatedevents (such as system failures) may generate events and notifications.

Visibility evaluator task 56 is a service that polls database 52 todetermine whether conditions relating to visibility have been met.Additional conditions may relate to user access or user permissions.Visibility evaluator task 56 may be implemented as a rules engine wherethe rules define the visibility conditions. The visibility evaluatortask 56 may match the rules against the data of database 52 to determinewhether a rule has been met and if so visibility evaluator task 56 mayraise an event. For example, the event may be a notification event tonotify one or more users that a content object is now visible to theuser(s) 14 or that the user(s) 14 are permitted to access the contentobject.

Visibility conditions may relate to a content object (e.g., a visibilitycondition for a content object may indicate whether to show/hide therespective content object) and access/permissions conditions may relateto a user 14 (e.g., an access condition for a content object mayindicate whether one or more user 14 are permitted to access the contentobject). For example, a visibility condition for a content object mayindicate that the content object is hidden to all users 14 or some users14 until the condition is met. Visibility conditions may be set orupdated by particular users 14 with corresponding authorization.

For example, the creator of a content object may have authorization toset a visibility condition to hide the content object from all users 14.The creator may then subsequently update the visibility condition toshow the content object to a subset of users 14. When the visibilityevaluator task 56 determines that a visibility condition has been metthen visibility evaluator task 56 raises an event. For example, theevent may be a notification event to notify that a content object is nowvisible to an individual user 14, all users 14, or a subset thereof. Forexample, a content object may have a hide/show attribute and the contentobject creator or administrator may hide the content object by settingthe attribute to hide and may show the content object by setting theattribute to show.

Visibility evaluator task 56 may implement conditions relating to thestates of a content object, such as for example, a condition that thepublication state be true, the draft state be false or the schedulepublication state refer to a date/time that has occurred. When the staterelated visibility condition has been met, then visibility evaluatortask 56 raises a notification event. For example, a content object maynot be visible to any user 14 if its draft state is true (or may only beavailable to a particular user 12) and its publication state is false,but may become visible to users 14 when its publication state becomestrue and its draft state becomes false. As a further example, a contentobject may not be visible to any user 14 if its scheduled publicationdate refers to a future date, but may be visible to users 14 when itspublication state refers to a date that has occurred. Visibilityevaluator task 56 is operable to raise a notification event when thevisibility of the content object has changed based on the change to thestates associated with the content object.

Visibility evaluator task 56 is operable to maintain conditions relatingto access/permissions for the content object. Access and permissions mayrelate to particular users 14. For example, a user 14 may be auditing acourse and may not have permission to view specific content objectsregardless of whether release conditions and visibility conditionsrelating to the content object have been met. Release conditions may bea special construct that may be configured by the content author. Forexample, FIG. 5 at 310 and 312 shows an example interface of creatingrelease conditions, whereas at 302 and 304 shows an example interfacefor visibility conditions (e.g., a content object is only visible from 8am to 5 pm today, hide this discussion topic). A change to thevisibility of the content object could trigger a notification event.Permission conditions may restrict the access of a user to one or morecontent objects. An example is “this user cannot see News Items”, andsuch permissions conditions would preclude the user 14 from everreceiving notifications about restricted content objects.

Domains 58 are groups of content objects, wherein each group representsa tool or business object of system 10. For example, domains 58 mayrepresent news items, discussion posts, grades, quizzes, assignments,data feeds, and so on. Domains 58 also raise notification events, suchas for example, when a new news item is received or new grades areposted. Domains 58 may allow for programmatic actions that may normallytake place in a user interface. For example any sort ofCreate/Read/Update/Delete action taken in the domain 58 of a contentobject could raise a notification. System events (e.g., system levelerrors) that occur in a domain 58 may also raise notifications.

Events service 60 is a service that receives events raised by componentssuch as condition set evaluator task 54, visibility evaluator task 56,and domains 58. Events service 60 receives different types of events,including notification events. Events service 60 provides the receivedevents to event handler 62 for routing to the appropriate componentbased on the type of event.

A content object may not be “available” to a user 14 until allassociated visibility conditions and release conditions are met. A user14 may not receive a notification for a content object unless thecontent object is available to the user 14. Accordingly, multiplenotification events from different components may be required before thecontent object is available to a user 14 and a notification message maybe sent to the user 14 about the content object. In accordance with someembodiments, events service 60 may hold off routing certain events toevent handler 62 until all required events are raised. For example,events service 60 may effectively gate notifications by not passing onthe raised notification events for a content object until all requirednotification events are received. For example, a content object may bepublished (i.e., publication state true) but a user 14 may not benotified until they have completed an assignment in the course asspecified in a release condition. Further, a user 14 may have completedthe assignment in the course (as specified in a release condition) butevents service 60 may not provide the notification event until thecontent object is published (i.e., publication state true) and no longerin draft (i.e., draft state false). Events service 60 is operable todetermine whether a content object associated with a notification eventis available to one or more users 14 prior to sending the notificationevent to instant notification 64. Events services 60 may performdifferent event checks to determine whether a content object isavailable to a user 14, as availability may be based on the state of thecontent object, permissions, release conditions, visibility, userconfigurations, and so on. Accordingly, one content object may requirenotification events to be raised by different components for the contentobject to become available.

In accordance with some embodiments, events service 60 is operable togate the sending of notification events regarding a content object untilreceiving a notification event indicating that the content object hasbeen published. For example, events service 60 is operable to check thepublication state of a content object upon receiving a notificationevent relating to the content object to determine whether the contentobject has been published and if not, events service 60 may gate thenotification event until the content object has been published (as maybe indicated by a notification event being raised or a state check).Event service 60 may be a general system for picking up events raised inother systems, and giving that event to appropriate event handlers(e.g., event handler 62). Some of these event handlers may bespecifically concerned with publishing notifications (e.g., instantnotification 64, user feed 66).

Event handler 62 is a component of notification system 50 that consumesevents raised to events service 60. For example, event handler 60listens to events service 60 for events and routes the events to theappropriate recipient component depending on the type of event. Eventhandler 62 may be configured with business logic or a plug in indicatingwhich specific types of events should be sent to specific components.For example, event handler 62 is operable to route notification eventsto instant notification 64. As another example, event handler 62 isoperable to route notification events and data pertaining to theassociated content object to user feed data structure 66 to compile RSSfeeds (compiled by RSS feeds service 70) or a daily digest (compiled bydaily digest service 72). The event handler 62 triggers a notificationmessage regarding a content object to be sent via instant notification64 or added to a user feed (indirect notification) via user feed datastructure 66. Event handlers 62 may not be specific to notifications andmay perform other sorts of custom logic or developers configurations.

Instant notification 64 is a service that receives notification eventsfrom event handler 62 and, in response, generates notification messagesfor content objects based on the received notification events forprovision to one or more users 14. For example, instant notification 64listens for notification events from events service 60 and generatesnotification messages in response. Instant notification 64 may generatenotification messages based on user configurations and deliverypreferences. For example, a user configuration may specify that aparticular user 14 only wants to receive notifications every Monday andinstant notification 64 is operable to queue notification messages fornotification events that came in on other days and hold until Monday.Further, user configurations may specify a template for the notificationmessages indicating what data should be included in the notificationmessage and its layout. User configurations may also indicate formattingpreferences for the notification message and may indicate preferredtypes of notification messages (e.g., SMS, email, social media messages,and the like).

In accordance with some embodiments, prior to sending a notificationmessage regarding a content object, instant notification 64 is operableto validate that the content object is “available” to the recipient user14 of the notification message. For example, instant notification 64 isoperable to determine whether a content object associated with anotification event is available to one or more users 14 prior to sendingthe notification message. Different notification event checks may bemade to determine whether a content object is available to a user 14, asavailability may be based on the state of the content object,permissions, release conditions, visibility, and so on. Accordingly,instant notification 64 may require notification events to be raised bydifferent components for the content object to become available and acorresponding notification message to be sent. In accordance with someembodiments, if the notification event does not relate to a change ofthe draft state, publication state or scheduled publication state of thecontent object then the instant notification 64 may check the draftstate, publication state, or scheduled publication state of the contentobject prior to providing the notification message to notificationdeliverer 68. Instant notification 64 may gate the creation of thenotification message until the publication state is set to true, thedraft state is set to false or the scheduled publication state date hasoccurred. As described herein, event handler 62 may gate providing anotification event to instant notification 64, which may also gate thecreation of the notification message.

Notification deliverer 68 is operable to deliver notification messagesreceived from instant notification 64 to users 14 in a variety offormats (e.g., email, SMS, MMS, social media messages, and so on) byinterfacing with different components such as an email service 74, SMStext message service 76, a Twitter™ service 78, a Facebook™ service 80,and other messaging services. Notification deliverer 68 may format thenotification message based on user configurations, a default formatsetting, a default delivery setting type of notification, and so on.Each of email service 74, SMS text message service 76, a Twitter™service 78, a Facebook™ service 80 are configured to send notificationmessages via email, SMS text message, Twitter™, and Facebook™respectively. Notification deliverer 68 is further operable to queuenotification messages until hardware resources are available fordelivery.

User feed data structure 66 receives events from event handlers 62relating to user feeds. In response, user feed data structure 66 isoperable to generate content for RSS feeds for provision to RSS feedsservice 70 and content for daily digests for provision to daily digestservice 72. The content for RSS feeds and daily digests may pertain tonewly available, released or visible content objects, news items, newdiscussion posts, and so on. For example, domains 58 may include newsfeeds (or other data feeds) and may raise an event relating to a new orupdated news item to events service 60 which in turn may provide theevent to event handler 62 which will route the event to user feed datastructure 66. A user may subscribe to a data feed, discussion forum, andso on and may receive notifications and subscription content in an RSSfeed (via RSS feed service 70) or a daily (or other period such asweekly or bi-weekly or monthly) digest (via daily digest service 72).Event handler 62 is configured to route events pertaining tosubscription content to user feed data structure 66 to triggergeneration of daily digests and RSS feeds. Accordingly, the events mayinclude content for inclusion in daily digests and RSS feeds or maycontain a reference (such as an address or identifier) to the content.The user feed data structure 66 may also generate navigation bar alerts,which may be a form of notification message.

RSS feed service 70 is operable to generate an RSS feed for delivery toone or more users 14. User feed data structure 66 receives an event thatrelates to an RSS feed and, in turn, provides the event or contentrelating to the event to RSS feed service 70 to generate the RSS feed.An RSS feed may be configured to a particular user 14 based on userconfigurations, or may be general for multiple users 14. The RSS feedmay include text, audio, images, video, and so on. The RSS feed mayinclude full or summarized content, and metadata such as creation date,publication data, and authorship.

Daily digest service 72 is operable to generate a periodic digest(daily, weekly, bi-weekly, monthly, and so on) of content for deliveryto one or more users 14. The digest may be a summary of events (andcorresponding content objects) that have occurred or will occur duringthe relevant period, such as assignments, tests, discussions, newcontent, updated content, readings, and so on. Daily digest service 72may provide the generated digest to notification deliverer for deliveryto users via a variety of services such as email service 74, SMS textmessage service 76, a Twitter™ service 78, a Facebook™ service 80, andother messaging services. A daily digest may be configured to aparticular user 14 based on user configurations, or may be general forall users 14, or a subset thereof.

Accordingly, notification system 50 is operable to gate sendingnotification messages relating to a content object of an electroniclearning platform to a user 14 until the content object is published,visible, accessible, and/or available to the user 14.

Referring now to FIG. 3 , there is shown a flow diagram of an electroniclearning method 100 for gating notifications according to someembodiments.

At 102, notification system 50 is operable to determine whether acontent object is “available” to at least one user 14, 12, where thecontent object includes content for a course managed by the electroniclearning platform. The content object may be available to one or moreusers 14, 12 based on publication states, permissions, releaseconditions, user configurations, visibility conditions, events, and soon. Notification system 50 is operable to perform various checks inrelation to the content object to determine whether it is available.Notification system 50 may gate the sending of notifications for acontent object to users 14, 12 until the respective content object isavailable to the users 14, 12. The content object may be available todifferent users 14, 12 at different times.

In accordance with some embodiments, notification system 50 may beoperable to determine whether the content object is available based onpublication of the content object. For example, notification system 50is operable to determine a publication date of the content object. Thecontent object may only be available to user(s) 14 on or after thepublication date. Notification system 50 may be operable to maintain apublication state for the content object indicating if the object hasbeen published. Notification system 50 may be operable to determinewhether the content is available by checking the publication state todetermine whether the content object has been published. Further,notification system 50 may be operable to maintain a scheduledpublication state for the content object. The scheduled publicationstate may indicate a publication date of when the content object will beautomatically published. Notification system 50 may be operable todetermine whether the content is available by checking the scheduledpublication state to determine whether the publication date hasoccurred. Further, notification system 50 may be operable to maintain adraft state indicating if the content object is a draft. If the contentobject is the draft (draft state is set to true) then the content objectis not available. Notification system 50 may be operable to determinewhether the content is available by checking the draft state todetermine whether the content object is the draft. For example,notification system 50 is operable to gate the sending of notificationsfor a content object to users 14, 12 until the content object ispublished, which may be based on one or more of a publication state,draft state, and scheduled publication state.

In accordance with some embodiments, notification system 50 may befurther operable to schedule the content object to be automaticallypublished at a publication date. Notification system 50 is operable todetermine whether the content object is available by determining whetherthe publication date of the content object has occurred. The contentobject may only be available to the at least one user if the publicationdate has occurred. Further, notification system 50 is operable todetermine whether the content object is available by determining whetherthe draft state is false/true, or determining whether the publicationstate is true/false, for example.

In accordance with some embodiments, notification system 50 may befurther operable to maintain a notification status indicating if anotification for the content object has been sent to the at least oneuser 12, 14. Prior to the sending the notification to the at least oneuser 14, 12, notification system 50 may check the notification statusand not send (or gate) the notification if the notification statusindicates that a notification for the content object has been sent tothe user. In accordance with some embodiments, notification status maybe on a per notification type basis. Notification system 50 may furthercheck if the same type of notification has been sent to the user 14, 12and not send (or gate) the notification if the notification statusindicates that the same type of notification for the content object hasbeen sent to the user 12, 14. For example, a first notification may besent to a user 14, 12 when a content object is newly created andpublished and a second notification may be send to the same user 14, 12if the same content object is subsequently updated by a major edit.Notification system 50 may be operable to maintain a notification statuson a per user basis, where each notification status is associated with auser indicating if a notification for the content object has been sentto that user.

The content object may be associated with at least one permissionattribute. Prior to sending a notification for the content object to auser 12, 14, notification system 50 is operable to determine whether thecontent object is available to the user 12, 14 by checking thepermission attribute. As another example, the content object may beassociated with at least one release condition. Prior to sending anotification for the content object to a user 12, 14, notificationsystem 50 is operable to determine whether the content object isavailable to at least one user by checking release conditions based onone or more actions performed by the user(s). As a further example, thecontent object may be associated with at least one event condition.Prior to sending a notification for the content object to a user 12, 14,notification system 50 is operable to determine whether the contentobject is available to the user 12, 14 by checking whether an event hasoccurred, wherein the event is associated with at least one of the usersand the content object. As another example, notification system 50 isoperable to determine whether the content object is available to the atleast one user by checking configurations associated with the at leastone user.

At 104, upon determining that the content object is available to the atleast one user, notification system 50 is operable to send anotification message to the at least one user indicating that thecontent object is available. As noted herein, the content object may beavailable to one or more users 14, 12 based on publication states,permissions, release conditions, user configurations, visibilityconditions, events, and so on. When the content object becomes availablea notification event may be raised to events service 60, which in turnprovides the raised notification event to event handler 62 to route thenotification event to the appropriate component. For example, eventhandler 62 may route the notification event to instance notificationservice 64 to generate a notification message for the content object.The generated notification may be provided to notification deliverer 68which in turn interfaces with a variety of delivery services such asemail service 74, SMS text message service 76, a Twitter™ service 78, aFacebook™ service 80, and other messaging services. The notificationmessage may be formatted based on the recipient user 12, 14 via userconfigurations.

At 106, upon determining that the content object is not available to theat least one user, notification system 50 is operable to gate thenotification (by gating a notification event or a notification message)until the content object is available to the at least one user. Inaccordance with some embodiments, a content object may be available onceit is published. Accordingly, notification system 50 is operable to gatethe notification (by gating the notification event or notificationmessage) until the content object is published. In accordance with otherembodiments, multiple events may be required and multiple conditionsmust be met before the content is available to a user. For example, acontent object may be in draft and then may be subsequently published,however, the published content object may not be available to a user 12,14 until the user performs an action, such as completing an assignment.

Referring now to FIG. 4 , there is shown a flow diagram of anotherelectronic learning method 200 for gating notifications according tosome embodiments. Notifications may be gated until the content object isavailable to the user 12 receiving the notification. An example checkrelating to a content object's availability is a status check.

At 202, notification system 50 is operable to maintain a state relatingto publication of a content object. A content object may trigger anevent regarding a change in state. Event services 60 listens for eventsand receives notification that a state of an object has changed. Forexample, notification system 50 is operable to maintain a scheduledpublication state for the content object, where the scheduledpublication state indicates a publication date of when the contentobject will be automatically published. Notification system 50 isoperable to gate notification until the scheduled publication date hasoccurred. As another example, notification system 50 is further operableto maintain a publication state for the content object indicatingwhether the content object has been published. If the content object isnot published (publication state set to false) then the notificationrelating to the content object is gated until publication of the contentobject (publication state set to true). As a further example,notification system 50 is further operable to maintain a draft state forthe content object indicating whether the content object is a draft. Ifthe content object is a draft (draft state set to true) then thenotification relating to the content object is gated until it is nolonger in draft state (draft state set to false). Notification system 50is also operable to maintain a notification status indicating whether anotification has been sent to the at least one user for the contentobject. Notification system 50 is also operable to maintain anotification status on a per user basis, where each notification statusis associated with a user indicating if a notification for the contentobject has already been sent to that user. The notification status mayalso be on a per notification type basis. For example, a notificationmay be sent when a new content object is created, and an additionalnotification may be sent when a major edit is made the content object.

Notification system 50 is further operable to set, using an interface,the scheduled publication state or the publication state for the contentobject by receiving the publication date or a publication action.Referring now to FIG. 5 , there is shown an interface 300 a for settingavailability for a content object. The interface 300 a may include astart date field 302 for setting a start date for the content object. Acontent object may only be available on or after the start date. Thestart date may be a scheduled publication date. The interface 300 a mayinclude an end date field 304 for setting an end date for the contentobject. A content object may no longer be available after the end date.For example, a content object may only be available during the periodbetween the start date and the end date.

The interface 300 a may include a publication button 306 for receivingan action (e.g., mouse click, touch, tap, and the like) to triggerpublication of the content object. Upon detecting the action onpublication button 306, notification system 50 is operable to publishthe content object and update the publication state (e.g., set thepublication state to true). The interface 300 a may include a save asdraft button 308 for receiving an action (e.g., mouse click, touch, tap)to trigger saving the content object as a draft. Upon detecting theaction on the save as draft button 308, notification system 50 isoperable to save the content object and update the draft state (set thedraft state to true).

Notification system 50 is operable to gate notifications when thecontent object is a draft (draft state set to true). When the draftstate is updated to indicate that the content object is no longer adraft (draft state update to false) then notification system 30 mayraise a notification event to events service 60 indicating that thecontent object is no longer a draft. At such time notification system 30may no longer gate notifications about the content object to a userprovided that the content object has been published and is available touser (e.g., release and visibility conditions are met, compliance withpermissions and user configurations, and so on). When the draft state ofa content object changes to indicate that the content object is nolonger a draft this may trigger an automatic publication of the contentobject and corresponding update to publication state. In other cases, anaction on publication button 306 is required to publish the contentobject or setting and reaching of a scheduled publication date isrequired to publish the content object.

Interface 300 a may include a mechanism for setting and removing releaseconditions for a content object. Interface 300 a may include an attachexisting release condition button 310 for receiving an action (e.g.,mouse click, touch, tap, and the like) to trigger attachment of anexisting release condition to the content object. This enablesnotification system 50 to reuse existing release conditions for multiplecontent objects. Interface 300 a may include a create release conditionbutton 312 for receiving an action (e.g., mouse click, touch, tap) totrigger creation of a release condition for the content object, andattachment of the newly created release condition to the content object.

Interface 300 a may also include a remove release conditions button 314to remove some or all release conditions attached to a content object.

Referring now to FIG. 6 , there is shown another interface 300 b forsetting availability for a content object. Interface 300 b may include aschedule publication button 316 for receiving an action (e.g., mouseclick, touch, tap) to trigger setting a date/time when the contentobject will automatically be published. Upon detecting the action onschedule publication button 316, notification system 50 is operable toupdate the scheduled publication state of the content object (set thescheduled publication date value). A content object may not be available(not published) until the scheduled publication data occurs andnotification system 50 is operable to gate notifications relating to thecontent object until the scheduled publication data occurs.

Referring now to FIG. 7 , there is shown an interface 300 c for updatinga content object. Notification system 50 is operable to sendnotifications when a content object is updated or edited. In accordancewith some embodiments, interface 300 c includes an update button 320 forreceiving an action (e.g., mouse click, touch, tap) to trigger an updateor edit to a content object. For example, course content may be editedby a user or metadata (e.g., states, attributes) about the contentobject may be edited by a user. Upon detecting the action on updatebutton 316, notification system 50 is operable to update the contentobject which may in turn trigger a notification event pertaining to theupdate. Interface 300 c may also include a major edit check box toindicate that an update is a major edit and a notification should besent pertaining to the major edit. In accordance with some embodiments,notifications may only be sent for major edits, and not minor edits.

At 204, notification system 50 is operable to gate a notificationrelating to the content object until the content object is published bymonitoring the scheduled publication state. Further, notification system50 is operable to gate the notification until the content object ispublished by monitoring the publication state. In addition, notificationsystem 50 is operable to gate the notification until the content objectis no longer in draft by monitoring the draft state. For example,notification system 50 may gate a notification by not raising anotification event until all conditions relating to the content objectare met (e.g., publication conditions, availability conditions). Asanother example, a notification event for the content object may beraised but a component of notification system 50 may hold off passingthe notification event to other components until a set of notificationevents for the content object have been collected or by checkingconditions and publication states for the content object. For example,events service 60, event handler 62 or instant notification may gatenotification events until all required conditions are met, the contentobject is in the correct state (e.g., published), or until a set ofnotification events for the same content object has been collected.

At 206, notification system 50 is operable to send the notificationrelating to the content object to one or more users 12, 14 when thecontent object is published. Prior to sending the notification to auser, notification system 50 is operable to check the notificationstatus and not send the notification if the notification statusindicates that a notification for the content object has been alreadysent to that user. As described herein, notification events may bepropagated through components of notification system 50 and notificationmessages may be generated and delivered to user 12, 14 by a component ofnotification system 50.

Accordingly, notification system 50 is operable to check content objectstates to see if the content object becomes available to a user 12, 14or is published. An event dispatcher component may trigger an eventdescribing the updated availability to trigger the generation anddelivery of a notification for a content object to a user. An eventhandler may route the raised event to the appropriate component ofnotification system 50.

Scheduling of publication may be convenient for users 14, 12 such asteachers or instructors of a course provided by education providersystem 30. For example, a teacher or organization may upload all contentobjects for a course to education provider system 30 (e.g., database 52)at the start of a teaching period for the course. The user 14, 12 maythen schedule publication dates for each content object in advance inline with the teaching agenda so that the user 12, 14 does not have tomanually trigger the publication of each content object, and does nothave to make all content objects for the course available to users 12(e.g., learners) at the time of upload.

As noted herein, a content object may have a draft state which mayfacilitate review of the content object by other users prior topublication. For example, a user 12, 14 may create content for a course(e.g., a teaching assistant or learner) and may have another user 12, 14(e.g., an instructor or another learner that may be partnered with thefirst learner) review the material prior to publication, and save thecontent object as a draft which sets the corresponding state. Forexample, the content object may relate to a group project and allmembers of the groups may be required to review and approve of thecontent object prior to publication. Notifications may be gated untilthe content object is no longer in draft state.

The scope of the claims should not be limited by the describedembodiments and examples but should be given the broadest interpretationconsistent with the description as a whole.

The invention claimed is:
 1. A computer implemented method of gatingnotification relating to a content object of an electronic learningplatform, wherein the computer comprises a processor and a memorycoupled to the processor and configured to store instructions executableby the processor to perform the method comprising: a) determiningwhether the content object is available to at least one user, whereinthe content object is initially hidden from the at least one user andbecomes available to the at least one user in response to an action bythe at least one user; b) upon determining that the content object isavailable to the at least one user, sending a notification to the atleast one user indicating that the content object is available; and c)upon determining that the content object is not available to the atleast one user, gating the notification until the content object isavailable to the at least one user.
 2. The method of claim 1, whereinthe determining as to whether the content object is available comprisesdetermining a publication date of the content object, wherein thecontent object may only be available to the at least one user on orafter the publication date.
 3. The method of claim 1, further comprisingscheduling the content to be automatically published at a publicationdate, and wherein the determining as to whether the content object isavailable comprises determining whether the publication date of thecontent object has occurred, wherein the content object may only beavailable to the at least one user if the publication date has occurred.4. The method of claim 1, further comprising maintaining a publicationstate for the object indicating if the object has been published, andwherein the determining as to whether the content is available compriseschecking the publication state to determine whether the object has beenpublished.
 5. The method of claim 1, further comprising maintaining ascheduled publication state for the content object, wherein thescheduled publication state indicates a publication date of when thecontent object will be automatically published, and wherein thedetermining as to whether the content is available comprises checkingthe scheduled publication state to determine whether the publicationdate has occurred.
 6. The method of claim 1, further comprisingmaintaining a draft state indicating if the content object is a draft,wherein if the content object is the draft, then the content object maynot available to one or more users, and wherein the determining whetherthe content is available comprises checking the draft state to determinewhether the content object is the draft.
 7. The method of claim 1,wherein the content object is associated with at least one permissionattribute, and wherein the determining as to whether the content objectis available to the at least one user comprises checking the permissionattribute.
 8. The method of claim 1, wherein the determining as towhether the content object is available to the at least one usercomprises checking release conditions based on one or more actionsperformed by the at least one user.
 9. The method of claim 1, whereinthe determining as to whether the content object is available to the atleast one user comprises determining whether an event has occurred,wherein the event is associated with at least one of the at least oneuser and the content object.
 10. The method of claim 1, wherein thedetermining as to whether the content object is available to the atleast one user comprises checking configurations associated with the atleast one user.
 11. The method of claim 1, further comprisingmaintaining a notification status indicating if a notification has beensent to the at least one user for the content object, and wherein priorto the sending the notification to the at least one user the methodfurther comprises checking the notification status and not sending thenotification if the notification status indicates that a notificationhas been sent to the at least one user for the content object.
 12. Themethod of claim 11, further comprising maintaining a notification statuson a per user basis, wherein each notification status is associated witha user indicating if a notification has been sent to the user for thecontent object.
 13. A computer implemented method of gating notificationrelating to a content object of an electronic learning platform, whereinthe computer comprises a processor and a memory coupled to the processorand configured to store instructions executable by the processor toperform the method comprising: a) maintaining a scheduled publicationstate for the content object, wherein the scheduled publication stateindicates a publication date of when the content object will beautomatically published, wherein the content object is initially hiddenfrom at least one user and becomes available to the at least one user inresponse to an action by the at least one user; b) gating a notificationrelating to the content object until the content object is published bymonitoring the scheduled publication state; and c) sending thenotification relating to the content object to the at least one userwhen the content object is published and available to the at least oneuser.
 14. The method of claim 13, further comprising maintaining apublication state for the content object indicating whether the contentobject has been published, wherein the gating of the notificationfurther comprises monitoring the publication state.
 15. The method ofclaim 13, further comprising maintaining a draft state for the contentobject indicating whether the content object is a draft, wherein if thecontent object is a draft, then the notification relating to the contentobject may be gated for one or more users, and wherein the gating of thenotification further comprises monitoring the draft state.
 16. Themethod of claim 13, further comprising setting, using an interface, thescheduled publication state for the content object by receiving thepublication date.
 17. The method of claim 13, further comprisingmaintaining a notification status indicating whether a notification hasbeen sent to the at least one user for the content object, and whereinprior to sending the notification to the at least one user the methodfurther comprises checking the notification status and not sending thenotification if the notification status indicates that a notificationhas been sent to the at least one user for the content object.
 18. Themethod of claim 17, further comprising maintaining a notification statuson a per user basis, wherein each notification status is associated witha user indicating if a notification has been sent to the user for thecontent object.
 19. A system of gating notification relating to acontent object of an electronic learning platform comprising one or moreprocessors and memory configured to provide: a) at least one contentobject associated with a scheduled publication state, wherein thescheduled publication state indicates a publication date of when thecontent object will be automatically published, wherein the contentobject is operable to issue an availability event when the publicationdate occurs, and wherein the content object is initially hidden from atleast one user and becomes available to the at least one user inresponse to an action by the at least one user; b) an event handleroperable to monitor for publication events and generate a notificationevent for the content object upon detecting an availability event issuedby the content object; and c) a notification handler operable to monitorfor notification events and to gate a notification relating to thecontent object to the at least one user until detecting a notificationevent for the content object.
 20. The system of claim 19, furthercomprising an interface for setting the scheduled publication state forthe content object.